const express = require("express");

const userController = require("../controllers/userController");
const loginCheck = require("../middlewares/loginCheck");
const xiaomi = require("../middlewares/xiaomi");

/* 创建路由器对象 */
const router = express.Router();

/* 定义路由 */
/* 受理注册请求 */
router.post("/register", async (req, res) => {
  // 拿到用户提交的用户名和密码
  const { username, password } = req.body;

  // 调用控制层的注册方法 丢入用户注册信息 拿到注册结果
  const result = await userController.register(username, password);

  // 忠实地将结果丢还客户端
  res.json(result);
});

/* 受理登录请求 */
router.post("/login", async (req, res) => {
  /* 采集用户的输入 */
  const { username, password } = req.body;

  /* 调用控制层对业务逻辑的处理 得到其结果 */
  const result = await userController.login(username, password);

  /* 将结果返还用户 */
  res.json(result);
});

/* 个人中心 */
// GET /user/用户id 24连小写字母或数字
router.get(
  /[a-z\d]{24}/,

  /* 黑哥的小蜜中间件 */
  xiaomi,

  /* 登录校验中间件 */
  /* loginCheck, */

  async (req, res) => {
    // 获取用户id
    const id = req.path.slice(1);

    // 直接调用控制层的处理结果
    const result = await userController.getUserDetail(id);

    // 处理结果直接丢还客户端
    res.json(result);
  }
);

/* 修改个人信息 */
// PUT /user/用户id
router.put(/[a-z\d]{24}/, async (req, res) => {
  // 获取用户id
  const id = req.path.slice(1);

  // 直接调用控制层的处理结果
  const result = await userController.updateUser0(id, req.body);

  // 处理结果直接丢还客户端
  res.json(result);
});

// POST /user/用户id
router.post(/[a-z\d]{24}/, async (req, res) => {
  /* 
  接收multipart表单提交的内容
  res.json({
    files:req.files,
    body:req.body
  })
  */

  // req.path=/62eb3c30ad6e2095b8ea917b 获取用户id
  const id = req.path.slice(1);

  // 直接调用控制层的处理结果
  // const result = await userController.updateUser1(id,req);
  const result = await userController.updateUser2(id,req);
  console.log("post result",result);

  // 处理结果直接丢还客户端
  res.json(result);

});

module.exports = router;
